home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 2.toast / pc / utilities / hypercard player / hypercard player 2.4 / audio help / stack_-1.xml < prev    next >
Encoding:
Extensible Markup Language  |  1997-04-23  |  37.4 KB  |  130 lines

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE stack PUBLIC "-//Apple, Inc.//DTD stack V 2.0//EN" "" >
  3. <stack>
  4.     <name>in</name>
  5.     <id>-1</id>
  6.     <cardCount>109</cardCount>
  7.     <cardID>18406</cardID>
  8.     <listID>12517</listID>
  9.     <cantModify><false /></cantModify>
  10.     <cantDelete><false /></cantDelete>
  11.     <cantAbort><false /></cantAbort>
  12.     <cardSize>
  13.         <width>256</width>
  14.         <height>292</height>
  15.     </cardSize>
  16.     <script>‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû
  17. Audio Help
  18. Version 2.3.6
  19.  
  20. ¬©Copyright 1987-1997 by Apple Computer,Inc.
  21. All Rights Reserved.
  22.  
  23. THE MESSAGE HANDLERS USED IN THIS SCRIPT:
  24. openStack,closeStack,resumeStack,suspendStack,help,createHelpMenu,
  25. deleteHelpMenu,setLocationCheckMark,resetHelpGlobal,storeHelpInfo,
  26. leaveHelp,goOverview,goBalloons,goMainTopics,goContent,goCard,goGray,
  27. storeMostRecentCard,selectWholeLine,checkForMissingFonts,saveSelection,
  28. checkSaveSelect,apClose,openCard,closeCard,openField,apOpenStack,
  29. apCloseStack,apHelp,apInvoke,resetAPMenus,apSave,apBeginEdit,
  30. apBeginWaveEdit,apEndWaveEdit,startSound,UpdateProtoScripts,
  31. annoteInstall,normalInstall,UpdateAnnoteMenus,apDelVNote,apHideNotes,
  32. apShowNotes,apAddMemo,resetAPButtons,PlayAllMemos
  33.  
  34. THE FUNCTION HANDLERS USED IN THIS SCRIPT:
  35. menuItems,menuCommands,getHelpInfo,stackIsBeingUsed,realTopicName,
  36. truncateName,checkIfAppointments,checkIfAddresses,computeMemoLoc,
  37. buttonAlreadyThere,cardHasSounds,isSoundButton,firstSoundButton,
  38.  
  39. ‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû‚àû
  40.  
  41. ------‚Ä¢‚Ä¢  SYSTEM MESSAGES  ‚Ä¢‚Ä¢------
  42.  
  43. on openStack
  44. APopenStack -- for the Audio Palette
  45. if stackIsBeingUsed() then pass openStack
  46. set cursor to watch
  47. checkForMissingFonts -- Check to see that necessary fonts are available.
  48. createHelpMenu -- Create the Help menu for this stack.
  49. resetHelpGlobal -- Empty out the stack's global variable.
  50. storeMostRecentCard -- Store the most recent card, so it can be returned to.
  51. show groups -- Put a gray underline under the grouped text.
  52. pass openStack
  53. end openStack
  54.  
  55. on closeStack
  56. apCloseStack -- for the Audio Palette
  57. if stackIsBeingUsed() then pass closeStack
  58. set cursor to watch
  59. send resetMainTopicsCard to card 1
  60. resetHelpGlobal
  61. deleteHelpMenu
  62. hide groups
  63. pass closeStack
  64. end closeStack
  65.  
  66. on resumeStack
  67. set cursor to watch
  68. APopenStack -- for the Audio Palette
  69. if stackIsBeingUsed() then pass resumeStack
  70. createHelpMenu
  71. show groups
  72. send "setCheckMark true" to this card
  73. pass resumeStack
  74. end resumeStack
  75.  
  76. on suspendStack
  77. apCloseStack -- for the Audio Palette
  78. if stackIsBeingUsed() then pass suspendStack
  79. deleteHelpMenu
  80. pass suspendStack
  81. end suspendStack
  82.  
  83. on help theTopic
  84. put "HyperCard Help" into theStack  --‚àÜ
  85. put "Audio Help" into AudioHelp  --‚àÜ
  86. go stack theStack in a new window -- try in a new window
  87. if the result = "Cancel" then
  88. go stack AudioHelp in a new window
  89. exit help
  90. else if the result ‚↠empty then
  91. go stack theStack
  92. end if
  93. if short name of this stack is theStack then findInTitle theTopic -- in the help stack
  94. end help
  95.  
  96. ------‚Ä¢‚Ä¢  SCRIPTS FOR HANDLING THE HELP MENU  ‚Ä¢‚Ä¢------
  97.  
  98. on createHelpMenu
  99. -- Create the stack-specific menu.
  100. global AudioHelpMenu
  101. put "Topics" into AudioHelpMenu -- ‚àÜ name of stack-specific menu
  102. -- Remove any existing menus that might have the same name.
  103. deleteHelpMenu
  104. create menu AudioHelpMenu
  105. put menuItems() into menu AudioHelpMenu with menuMsg menuCommands()
  106. -- Disable the menu item "Print Topic"
  107. disable menuItem 6 of menu AudioHelpMenu
  108. end createHelpMenu
  109.  
  110. function menuItems
  111. -- Return the menu items for the stack-specific menu.
  112. return "Main Topics,Content,Quick View,Overview,-,Print Topic" -- ‚àÜ
  113. end menuItems
  114.  
  115. function menuCommands
  116. -- Return the menu commands for the stack-specific menu.
  117. return "goMainTopics,goContent,goBalloons,goOverview,,printTopic"
  118. end menuCommands
  119.  
  120. on deleteHelpMenu
  121. global AudioHelpMenu
  122. if there is a menu AudioHelpMenu then delete menu AudioHelpMenu
  123. end deleteHelpMenu
  124.  
  125. on setLocationCheckMark whichItem,boolean
  126. -- Set a check mark to indiate the current location.
  127. -- whichItem is an integer, the menu item that you want to check
  128. -- or uncheck.
  129. -- whichItem is true or false depending on whether you want to
  130. -- check or uncheck the menu item.
  131. global AudioHelpMenu
  132. if there is no menu AudioHelpMenu then
  133. createHelpMenu
  134. end if
  135. if there is a menuItem whichItem in menu AudioHelpMenu then
  136. set checkMark of menuItem whichItem of menu AudioHelpMenu to boolean
  137. end if
  138. end setLocationCheckMark
  139.  
  140. ------‚Ä¢‚Ä¢  SCRIPTS FOR HANDLING THE HELP GLOBAL  ‚Ä¢‚Ä¢------
  141.  
  142. on resetHelpGlobal
  143. global AudioHelpInfo
  144. put empty into AudioHelpInfo
  145. end resetHelpGlobal
  146.  
  147. on storeHelpInfo lineNumber,theValue
  148. -- Use this handler to put a value into the global AudioHelpInfo.
  149. -- lineNumber is an integer, the line number of the
  150. -- global you want to put the value into. theValue is the value
  151. -- you want to store in the global.
  152. global AudioHelpInfo
  153. put theValue into line lineNumber of AudioHelpInfo
  154. end storeHelpInfo
  155.  
  156. function getHelpInfo lineNumber
  157. -- Use this hanlder to get a value from the AudioHelpInfo global.
  158. -- lineNumber is an integer, the line number of the
  159. -- global that you want to return.
  160. global AudioHelpInfo
  161. return line lineNumber of AudioHelpInfo
  162. end getHelpInfo
  163.  
  164. ------‚Ä¢‚Ä¢  SCRIPTS FOR BASIC NAVIGATION  ‚Ä¢‚Ä¢------
  165.  
  166. on leaveHelp
  167. -- This handler is called when you click the Leave Help button in
  168. -- either background.
  169. put getHelpInfo(1) into theCard -- path of the return card
  170. if theCard is empty then put "Home" into theCard
  171. go theCard
  172. end leaveHelp
  173.  
  174. on goOverview
  175. -- Go to the Overview card.
  176. put the name of this card into cardName
  177. put realTopicName() into topicName
  178. goCard "Overview"
  179. end goOverview
  180.  
  181. on goBalloons
  182. -- Go to the Quick View card.
  183. put the name of this card into cardName
  184. put realTopicName() into topicName
  185. goCard "Quick View"
  186. end goBalloons
  187.  
  188. on goMainTopics
  189. -- Go to the first main topics card.
  190. go first card
  191. end goMainTopics
  192.  
  193. on goContent
  194. -- Go to the Content background
  195. go bkgnd "Content"
  196. end goContent
  197.  
  198. on goCard cardName
  199. -- Go to a card by name, making sure to truncate the name
  200. -- to 28 chars. All card names are already truncated.
  201. -- cardName is the short name of the card you want to go to.
  202. set cursor to watch
  203. if cardName is empty then exit goCard
  204. wait 5
  205. go card truncateName(cardName)
  206. if the result is not empty then
  207. -- The requested card wasn't found.
  208. get the result
  209. beep
  210. answer it && quote & cardName & quote & "."
  211. exit goCard
  212. end if
  213. if the mouse is down then exit goCard -- trap double click
  214. end goCard
  215.  
  216. on goGray
  217. -- You clicked on one of the gray navigation buttons.
  218. beep
  219. end goGray
  220.  
  221. ------‚Ä¢‚Ä¢  GENERAL MESSAGE HANDLERS  ‚Ä¢‚Ä¢------
  222.  
  223. on storeMostRecentCard
  224. -- This handler stores the most recent card in a global, so you
  225. -- can return to it when you click the "Leave Help" button.
  226. push recent card
  227. pop card into theCard
  228. storeHelpInfo 1,theCard -- path of the return card
  229. end storeMostRecentCard
  230.  
  231. on selectWholeLine N,theField,nextN
  232. -- This handler selects a whole line of text, including the final
  233. -- return character, in the field.
  234. -- N is an integer, the number of the line you want to select.
  235. -- theField is a complete field record as in ‚Äúthe target,‚Äù not just
  236. -- the field name.
  237. -- if you want to select more than one line, put the line number into
  238. -- nextN.
  239. if nextN is empty then put N into nextN
  240. put line N to nextN of the value of theField into theText
  241. if theText is not empty then
  242. put (number of chars of line 1 to nextN of the value of theField) + 1 ¬¨
  243. into endChar
  244. select empty
  245. do "select char (endChar - length(theText)) to endChar of" ¬¨
  246. && theField
  247. end if
  248. end selectWholeLine
  249.  
  250. on menuReset
  251. global IsaSoundStack,invokeMItem,helpMItem,HCEditMenuItems
  252. if last menuItem of menu 3 is "-" then delete last menuItem of menu 3
  253. if there is not a menuItem invokeMItem in menu 3 then
  254. put return into cr
  255. put "-"&cr&invokeMItem&cr&helpMItem after¬¨
  256. menu 3 with menuMsgs cr&"APinvoke"&cr&"APhelp"
  257. end if
  258. put menu 3 into HCEditMenuItems
  259. if IsASoundStack then UpdateAnnoteMenus
  260. if there is a menuitem helpMItem in menu 3 then
  261. set the checkmark of menuItem helpMItem in menu 3 to¬¨
  262. (the name of this stack = the name of me)
  263. end if
  264. if (the name of this stack = the name of me) then
  265. CreateHelpMenu
  266. send "setCheckMark true" to this card
  267. end if
  268. pass menuReset
  269. end menuReset
  270.  
  271. -----  Font Adjustment Scripts:  ----------------------------------
  272.  
  273. on checkForMissingFonts
  274. -- check to see if the fonts needed for this stack are
  275. -- installed in the system. Inform the user if they're not.
  276. global APFontsChecked
  277. if APFontsChecked is not empty then exit checkForMissingFonts -- already been here.
  278. put "fonts checked." into APFontsChecked
  279. put empty into missing
  280. if not FontExists("Palatino",12) then put "Palatino 12" & return after missing  --‚àÜ
  281. if not FontExists("Palatino",14) then put "Palatino 14" & return after missing  --‚àÜ
  282. if not FontExists("Helvetica",18) then put "Helvetica 18" & return after missing  --‚àÜ
  283. if missing is empty then exit checkForMissingFonts
  284. beep
  285. answer "These font(s) are missing from your system:" & ¬¨
  286. return & return & missing & return & "For text to display correctly"¬¨
  287. && "in the Audio Help stack, make sure you have installed these fonts." -- ‚àÜ
  288. end checkForMissingFonts
  289.  
  290. ------‚Ä¢‚Ä¢  GENERAL FUNCTION HANDLERS  ‚Ä¢‚Ä¢------
  291.  
  292. function stackIsBeingUsed
  293. -- If Audio Help is being used by the active stack, then return true.
  294. return not (the name of this stack is the name of me)
  295. end stackIsBeingUsed
  296.  
  297. function realTopicName
  298. -- Return the actual name of the current topic even if
  299. -- the user is on a ‚Äúcontinued‚Äù card.
  300. if there is not a bkgnd field "Pages" then return empty
  301. -- ‚àÜ This routine depends on "Card X of Y" format in the field
  302. put word 2 of bkgnd field "Pages" into currentPage
  303. get the number of this card
  304. put bkgnd field "Title" ¬¨
  305. of card (it - currentPage + 1) into topicName
  306. if number of lines in topicName > 1 then
  307. delete line 2 of topicName
  308. put "‚Ķ" after topicName -- ‚àÜ
  309. end if
  310. if number of chars in topicName > 19 then
  311. put char 1 to 19 of topicName into topicName
  312. if "‚Ķ" is not in topicName then put "‚Ķ" after topicName -- ‚àÜ
  313. end if
  314. return topicName
  315. end realTopicName
  316.  
  317. function truncateName theText
  318. -- Removes spaces from a card name, truncates it, and removes
  319. -- any spaces again. You should set the name of all the cards with
  320. -- this function.
  321. get the number of words in theText
  322. put word 1 to it of theText into theCard
  323. return char 1 to 28 of theCard
  324. end truncateName
  325.  
  326. ------‚Ä¢‚Ä¢  SCRIPTS FOR HANDLING THE AUDIO PALETTE  ‚Ä¢‚Ä¢------
  327.  
  328. --system message handlers
  329. on saveSelection
  330. global SaveSelect,SaveLine,SaveLoc
  331. put empty into saveSelect
  332. CheckSaveSelect
  333. end saveSelection
  334.  
  335. on CheckSaveSelect
  336. global SaveSelect,SaveLine,SaveLoc
  337. if there is a field "notes" then put the number of field "notes" into NoteField
  338. get the selectedChunk
  339. if it is not empty and "message box" is not in it and ¬¨
  340. word 6 to 8 of it is not "bkgnd field" && NoteField then
  341. put it into SaveSelect
  342. put the selectedLine into SaveLine
  343. put the selectedLoc into SaveLoc
  344. set the textstyle of SaveSelect to bold
  345. end if
  346. end CheckSaveSelect
  347.  
  348. on apClose
  349. global SaveSelect,InvokeMItem
  350. if saveSelect ‚↠empty then
  351. if the textstyle of saveSelect is bold then set the textstyle of saveSelect to plain
  352. end if
  353. pass apClose
  354. end apClose
  355.  
  356. on openCard
  357. global IsASoundStack
  358. if not IsASoundStack then pass openCard
  359. set the cursor to watch
  360. resetAPButtons
  361. pass openCard
  362. end openCard
  363.  
  364. on closeCard
  365. global IsASoundStack,saveSelect
  366. if not IsASoundStack then pass closeCard
  367. if saveSelect ‚↠empty then
  368. if the textstyle of saveSelect is bold then set the textstyle of saveSelect to plain
  369. put empty into saveSelect
  370. end if
  371. pass closeCard
  372. end closeCard
  373.  
  374. on openField
  375. global IsASoundStack, saveSelect
  376. if not IsASoundStack then pass openField
  377. if saveSelect ‚↠empty then
  378. -- get the selectedChunk
  379. set the textstyle of saveSelect to plain
  380. -- if it is not empty and "message box" is not in it and "notes" is not in it
  381. -- then put empty into saveSelect
  382. put empty into saveSelect
  383. end if
  384. pass openField
  385. end openField
  386.  
  387. on apOpenStack
  388. global IsASoundStack
  389. put (CheckIfAppointments() or CheckIfAddresses()) into IsASoundStack
  390. resetAPMenus
  391. if there is a window "AudioPalette"
  392. then send "update" to window "AudioPalette" --rebuild sound pop-up
  393. end apOpenStack
  394.  
  395. function CheckIfAppointments
  396. -- also makes sure the Appointments stack has been modified
  397. -- to pass openCard, which is something we need.
  398. if not (there is a bg ID 2603) then return false -- faster than "is not a"
  399. if "resetAPButtons" is not in the script of bg ID 2603 then return false
  400. if "pass openCard" is not in the script of bg ID 21753 then
  401. put script of bg ID 21753 into TheScript
  402. get number of lines in char 1 to offset(return & "end openCard",TheScript)¬¨
  403. of TheScript
  404. if it = 0 then return true
  405. put return & "pass openCard" after line it of TheScript
  406. set the script of bg ID 21753 to TheScript
  407. end if
  408. return true
  409. end CheckIfAppointments
  410.  
  411. function CheckIfAddresses
  412. if not (there is a bg ID 3664) then return false -- faster than "is not a"
  413. if "resetAPButtons" is not in the script of bg ID 3664 then return false
  414. else return true
  415. end CheckIfAddresses
  416.  
  417. on apCloseStack
  418. global APMenuName, memoMItem,delMItem,¬¨
  419. showMItem,hideMItem,IsASoundStack
  420. if there is a menuItem hideMItem in menu 3 then
  421. delete menuItem hideMItem from menu 3
  422. else if there is a menuItem showMItem in menu 3 then
  423. delete menuItem showMItem from menu 3
  424. end if
  425. if there is a menuItem delMItem in menu 3 then
  426. delete menuItem delMItem from menu 3
  427. end if
  428. if there is a menuItem memoMItem in menu 3 then
  429. delete menuItem memoMItem from menu 3
  430. end if
  431. put false into IsASoundStack
  432. end apCloseStack
  433.  
  434. --menu message handlers
  435. on DoMenu theItem,theMenu
  436. global APHasEdit
  437. if APHasEdit is true then -- have to say "is true" because it may not be defined
  438. if word 1 of theItem is in "Undo,Cut,Copy,Paste,Clear" then --‚àÜ
  439. send word 1 of theItem to window "AudioPalette"
  440. exit doMenu
  441. end if
  442. end if
  443. pass DoMenu
  444. end DoMenu
  445.  
  446. on apHelp
  447. global helpMItem
  448. go stack helpMItem in a new window
  449. get the result
  450. if it is "Cancel" then exit apHelp
  451. if it ‚↠empty then go stack helpMItem
  452. end apHelp
  453.  
  454. on apInvoke
  455. global InvokeMItem
  456. if there is not a window "AudioPalette" then AudioPalette
  457. else show window "AudioPalette" -- to bring to the front of the windoid layer
  458. end apInvoke
  459.  
  460. on resetAPMenus
  461. global memoMItem,invokeMItem,helpMItem,IsASoundStack
  462. if (":" & helpMItem & return) is not in (the stacksInUse & return) then
  463. start using stack helpMItem
  464. StartSound
  465. end if
  466.  
  467. if IsASoundStack then UpdateAnnoteMenus
  468.  
  469. if there is a menuitem helpMItem in menu 3 then
  470. set the checkmark of menuItem helpMItem in menu 3 to¬¨
  471. (the name of this stack = the name of me)
  472. end if
  473. end resetAPMenus
  474.  
  475. on apSave fileName
  476. global IsASoundStack
  477. set the cursor to watch
  478. if IsASoundStack then annoteInstall fileName
  479. else normalInstall fileName
  480. end apSave
  481.  
  482. on apBeginEdit
  483. global SaveSelect, SaveLine, SaveLoc
  484.  
  485. put "Undo" into menuitem 1 of menu 3  --‚àÜ
  486. put "-" into menuitem 2 of menu 3  --‚àÜ
  487. put "Cut" into menuItem 3 of menu 3  --‚àÜ
  488. put "Copy" into menuItem 4 of menu 3  --‚àÜ
  489. put "Paste" into menuItem 5 of Menu 3  --‚àÜ
  490. put "Clear" into menuItem 6 of menu 3  --‚àÜ
  491. set cmdChar of menuitem 1 of menu 3 to "Z" --‚àÜ
  492. set cmdChar of menuItem 3 of menu 3 to "X" --‚àÜ
  493. set cmdChar of menuItem 4 of menu 3 to "C" --‚àÜ
  494. set cmdChar of menuItem 5 of menu 3 to "V" --‚àÜ
  495.  
  496. if SaveSelect is not empty then exit apBeginEdit
  497. get the SelectedChunk
  498. if there is a field "notes" then put the number of field "notes" into NotesField
  499. if it is empty or "message box" is in it or ¬¨
  500. word 6 to 8 of it = "bkgnd field" && NotesField then exit apBeginEdit
  501. put it into SaveSelect
  502. put the selectedLine into SaveLine
  503. put the selectedLoc into SaveLoc
  504. set the textstyle of SaveSelect to bold
  505. end apBeginEdit
  506.  
  507. on apBeginWaveEdit
  508. global HCEditItems,APEditingItems,APEditingItemMsgs, ¬¨
  509. SaveSelect, SaveLine, SaveLoc, APHasWaveEdit
  510.  
  511. if SaveSelect is empty then
  512. CheckSaveSelect
  513. end if
  514.  
  515. if SaveSelect is not empty then set the textStyle of SaveSelect to bold
  516.  
  517. put true into APHasWaveEdit
  518.  
  519. put "Undo" into menuitem 1 of menu 3  --‚àÜ
  520. put "-" into menuitem 2 of menu 3  --‚àÜ
  521. put "Cut Sound" into menuitem 3 of menu 3  --‚àÜ
  522. put "Copy Sound" into menuitem 4 of menu 3  --‚àÜ
  523. put "Paste Sound" into menuitem 5 of menu 3  --‚àÜ
  524. put "Clear Sound" into menuitem 6 of menu 3  --‚àÜ
  525.  
  526. set cmdChar of menuitem 1 of menu 3 to "Z" --‚àÜ
  527. set cmdChar of menuitem 3 of menu 3 to "X" --‚àÜ
  528. set cmdChar of menuitem 4 of menu 3 to "C" --‚àÜ
  529. set cmdChar of menuitem 5 of menu 3 to "V" --‚àÜ
  530.  
  531. if there is a menuItem "Select All" of menu 3 then exit apBeginWaveEdit --‚àÜ
  532.  
  533. put "-,Select All,View All" after menuitem 6 of menu 3 with ¬¨  --‚àÜ
  534. menuMsgs "-,send SelectAll to window AudioPalette," &¬¨
  535. "send ViewAll to window AudioPalette"
  536.  
  537. set cmdChar of menuitem 8 of menu 3 to "A" --‚àÜ
  538. set cmdChar of menuitem 9 of menu 3 to "S" --‚àÜ
  539. end apBeginWaveEdit
  540.  
  541. on apEndWaveEdit
  542. global HCEditMenuItems, APHasWaveEdit
  543. put false into APHasWaveEdit
  544. put "Undo" into menuitem 1 of menu 3  --‚àÜ
  545. put "-" into menuitem 2 of menu 3  --‚àÜ
  546. put "Cut" into menuItem 3 of menu 3  --‚àÜ
  547. put "Copy" into menuItem 4 of menu 3  --‚àÜ
  548. put "Paste" into menuItem 5 of Menu 3  --‚àÜ
  549. put "Clear" into menuItem 6 of menu 3  --‚àÜ
  550. set cmdChar of menuitem 1 of menu 3 to "Z" --‚àÜ
  551. set cmdChar of menuItem 3 of menu 3 to "X" --‚àÜ
  552. set cmdChar of menuItem 4 of menu 3 to "C" --‚àÜ
  553. set cmdChar of menuItem 5 of menu 3 to "V" --‚àÜ
  554. if there is not a menuItem "Select All" of menu 3 then exit apEndWaveEdit  --‚àÜ
  555. repeat 3
  556. delete menuitem 7 of menu 3
  557. end repeat
  558. end apEndWaveEdit
  559.  
  560. --other handlers
  561.  
  562. on startSound
  563. global SaveSelect,hideMItem,protoApptBtnScript,protoNormalBtnScript,¬¨
  564. memoMItem,delMItem,showMItem,APMenuName,invokeMItem,helpMItem,¬
  565. IsASoundStack,HCEditMenuItems
  566. put (CheckIfAppointments() or CheckIfAddresses()) into IsASoundStack
  567. put empty into Saveselect
  568. put "Edit" into APMenuName --‚àÜ name of menu AudioPallete uses
  569. put "Audio..." into invokeMItem --‚àÜ item which launches AP
  570. put "Audio Help" into helpMItem --‚àÜ item which opens help stack
  571. put  "Add Audio Memo" into memoMItem --‚àÜ item which adds a memo
  572. put  "Delete Audio Memo‚Ķ" into delMItem --‚àÜ item which deletes memo
  573. put  "Hide Audio Memos"  into hideMItem --‚àÜ item which hides memos
  574. put  "Show Audio Memos"  into showMItem --‚àÜ item which shows memos
  575. if last menuItem of menu 3 is "-" then delete last menuItem of menu 3
  576. if there is not a menuItem invokeMItem in menu 3 then
  577. put return into cr
  578. put "-"&cr&invokeMItem&cr&helpMItem after¬¨
  579. menu 3 with menuMsgs cr&"APinvoke"&cr&"APhelp"
  580. end if
  581.  
  582. put menu 3 into HCEditMenuItems
  583.  
  584. set the cursor to watch
  585. lock screen
  586. set lockmessages to true
  587. push card
  588. go stack helpMItem
  589. put the script of bg btn "ProtoApptbtn" into protoApptBtnScript
  590. put the script of bg btn "ProtoNormalbtn" into protoNormalBtnScript
  591. pop card
  592. set lockmessages to false
  593. unlock screen
  594. end startSound
  595.  
  596. on UpdateProtoScripts
  597. global protoApptBtnScript,protoNormalBtnScript
  598. put the script of bg btn "ProtoApptbtn" into protoApptBtnScript
  599. put the script of bg btn "ProtoNormalbtn" into protoNormalBtnScript
  600. end UpdateProtoScripts
  601.  
  602. on annoteInstall fileName
  603. global SaveSelect, protoApptBtnScript, SaveLine, SaveLoc
  604. if SaveSelect is empty then
  605. CheckSaveSelect
  606. end if
  607. if the first char of fileName is quote then
  608. delete the last char of fileName
  609. delete the first char of fileName
  610. end if
  611. put fileName & return & "AP Button" into NewBtnName
  612. put protoApptBtnScript into btnscript
  613. get number of words in char 1 to offset("putSoundNameHere",btnScript) of btnScript
  614. put quote & fileName & quote into word it of btnscript
  615. if there is a button NewBtnName then
  616. if SaveSelect is not empty then
  617. put ComputeMemoLoc(NewBtnName) into InstallLoc
  618. set loc of btn NewBtnName to InstallLoc
  619. if not the visible of btn NewBtnName then show btn NewBtnName
  620. end if
  621. else
  622. put ComputeMemoLoc() into InstallLoc
  623. lock screen
  624. get the userlevel
  625. set the userlevel to 5
  626. domenu "New Button"
  627. choose browse tool
  628. set the userlevel to it
  629. put the ID of last btn into btnID
  630. set the name of btn ID btnID to NewBtnName
  631. set height of btn ID btnID to 17
  632. set width of btn ID btnID to 20
  633. set the script of btn ID btnID to btnscript
  634. set the loc of btn ID btnID to InstallLoc
  635. set the icon of btn ID btnID to 29183
  636. set the showname of btn ID btnID to false
  637. set the style of btn ID btnID to opaque
  638. set the autoHilite of btn ID btnID to false
  639. unlock screen
  640. end if
  641. if saveSelect is not empty then
  642. set the textstyle of saveSelect to plain
  643. put empty into SaveSelect
  644. end if
  645. UpdateAnnoteMenus
  646. if the visible of btn NewBtnName then
  647. repeat 4
  648. wait 10
  649. set the hilite of btn NewBtnName to not the hilite of btn NewBtnName
  650. end repeat
  651. end if
  652. put "To move your button, hold down the option key and drag." --‚àÜ
  653. end annoteInstall
  654.  
  655. function ComputeMemoLoc TargetButton
  656. global SaveSelect, SaveLine, SaveLoc
  657. if SaveSelect is empty then
  658. put "10,28" into InstallLoc
  659. else
  660. put (word 4 to 6 of saveLine) into thisFieldName
  661. if the ID of this bg is 3664 then
  662. if the first word of the short name of thisFieldName is "Phone" then
  663. put 29 into leftOffset
  664. put 7 into vertOffset
  665. else
  666. put 10 into leftOffset
  667. put 11 into vertOffset
  668. end if
  669. else
  670. put 24 into leftOffset
  671. put 2 into vertOffset
  672. end if
  673. put (the left of thisFieldName) - leftOffset into item 1 of installLoc
  674. put (item 2 of saveLoc) - (the textHeight of thisFieldName DIV 2) into item 2 of installLoc
  675. end if
  676. if not CardHasSounds() then return installLoc
  677. put the number of btns into NumBtns
  678. put installLoc = "10,28" into WasInCorner
  679. put installLoc into OriginalLoc
  680. put true into FoundOne
  681. put empty into BtnInChain
  682. repeat until not FoundOne
  683. put false into FoundOne
  684. repeat with count = 1 to NumBtns
  685. if not IsSoundButton(count) then next repeat
  686. if installLoc is within the rect of btn count then
  687. put true into FoundOne
  688. if WasInCorner then
  689. repeat until ButtonAlreadyThere(installLoc) = 0
  690. add 9 to item 1 of installLoc
  691. add 9 to item 2 of installLoc
  692. if installLoc is not within the rect of this cd then subtract 9 from item 2 of installLoc
  693. end repeat
  694. else
  695. if BtnInChain is empty then put the short name of btn count into BtnInChain
  696. if TargetButton is not empty then
  697. if installLoc = the loc of btn TargetButton then return InstallLoc
  698. end if
  699. repeat until ButtonAlreadyThere(installLoc) = 0
  700. add 8 to item 2 of installLoc
  701. if item 2 of installLoc + 8 > the height of this cd then
  702. subtract 8 from item 2 of installLoc
  703. add 5 to item 1 of installLoc
  704. end if
  705. if TargetButton is not empty then
  706. if installLoc = the loc of btn TargetButton then return InstallLoc
  707. end if
  708. end repeat
  709. end if
  710. end if
  711. end repeat
  712. end repeat
  713. if WasInCorner then return installLoc
  714. if BtnInChain is not empty then
  715. set cursor to arrow
  716. answer "Do you want to replace the old audio memo with the new one?" with¬¨ --‚àÜ
  717. "No" or "Yes" --‚àÜ
  718. set cursor to watch
  719. if it is "No" then return InstallLoc --‚àÜ
  720. else
  721. lock screen
  722. send "deleteMe noSound" to btn BtnInChain
  723. return OriginalLoc
  724. end if
  725. end if
  726. return InstallLoc
  727. end ComputeMemoLoc
  728.  
  729. function ButtonAlreadyThere theLoc
  730. if not CardHasSounds() then return 0
  731. put the number of btns into NumBtns
  732. repeat with i = 1 to NumBtns
  733. if not IsSoundButton(i) then next repeat
  734. if theLoc is within the rect of btn i then return i
  735. end repeat
  736. return 0
  737. end ButtonAlreadyThere
  738.  
  739. on normalInstall fileName
  740. global helpMItem, protoNormalBtnScript, lastButton
  741. put FALSE into noNewButton
  742. put empty into prevBtn
  743. lock screen
  744. put filename into it
  745. if char 1 of fileName = quote then
  746. delete the first char of filename
  747. delete the last char of filename
  748. end if
  749. put "Play" && filename into newName  --‚àÜ
  750. repeat with i = 1 to the number of btns
  751. get the short name of btn i
  752. if it is newName then
  753. put TRUE into noNewButton
  754. exit repeat
  755. end if
  756. if the first word of it is "Play" then --‚àÜ
  757. put it into prevBtn
  758. end if
  759. end repeat
  760. if not noNewButton then
  761. get the userlevel
  762. set the userlevel to 5
  763. doMenu "New Button"
  764. set the userlevel to it
  765. -- set attributes of new button
  766. set showName of last card button to true
  767. set name of last card button to newName
  768. set autoHilite of last card button to false
  769. get length(newName)
  770. set width of last card button to (it * 8)
  771.  
  772. put protoNormalBtnScript into btnScript
  773. get number of words in char 1 to offset("putSoundNameHere",btnScript) of btnScript
  774. put quote & fileName & quote into word it of btnscript
  775.  
  776. set the script of the last card button to btnScript
  777. --get the loc of the last card button
  778. if prevBtn is not empty then
  779. get the loc of cd btn prevBtn
  780. add 4 to item 1 of it
  781. add 16 to item 2 of it
  782. if it is within rect of this cd then set the loc of last card button to it
  783. else
  784. set the left of last btn to 0
  785. set the top of last btn to 0
  786. end if
  787. end if
  788. end if
  789. choose browse tool
  790. unlock screen
  791. if the visible of btn NewName then
  792. repeat 4
  793. wait 10
  794. set the hilite of btn NewName to not the hilite of btn NewName
  795. end repeat
  796. end if
  797. put "To move your button, hold down the option key and drag." --‚àÜ
  798. end normalInstall
  799.  
  800. on UpdateAnnoteMenus
  801. global memoMItem,delMItem,showMItem,hideMItem
  802. -- First, make sure the menu is there...
  803. if there is not a menuItem memoMItem in menu 3 then
  804. put memoMItem & return & delMItem & return & hideMItem after ¬¨
  805. menu 3 with menuMsgs "APAddMemo,APDelVNote,APHideNotes"
  806. end if
  807.  
  808. disable menuItem delMItem of menu 3
  809. get FirstSoundButton()
  810. if it > 0 then
  811. -- handle hide/show item
  812. if the visible of btn it then
  813. put hideMItem into last menuItem of menu 3 with menuMsg APHideNotes
  814. else
  815. put showMItem into last menuItem of menu 3 with menuMsg APShowNotes
  816. end if
  817. enable last menuItem of menu 3
  818. -- handle delete item
  819. put number of btns into NumBtns
  820. repeat with i = it to NumBtns
  821. if IsSoundButton(i) then
  822. if the hilite of btn i then
  823. if the visible of btn i then
  824. enable menuItem delMItem of menu 3
  825. exit repeat
  826. end if
  827. end if
  828. end if
  829. end repeat
  830. else
  831. disable last menuItem of menu 3
  832. end if
  833. set the enabled of menuItem memoMItem of menu 3 to ¬¨
  834. the ID of this bg is in "2603,3664"
  835. end upDateAnnoteMenus
  836.  
  837. on apDelVNote
  838. set cursor to watch
  839. put the number of btns into NumBtns
  840. get 0
  841. repeat with i = 1 to NumBtns
  842. if not IsSoundButton(i) then next repeat
  843. if the hilite of btn i then add 1 to it
  844. end repeat
  845. if it = 1 then put "Delete the selected sound?" into thePrompt --‚àÜ
  846. else put "Delete the" && it && "selected sounds?" into thePrompt --‚àÜ
  847. answer thePrompt with "No" or "Yes" --‚àÜ
  848. if it is "No" then exit apDelVNote --‚àÜ
  849. set cursor to watch
  850. lock screen
  851. repeat with i = NumBtns down to 1
  852. set cursor to busy
  853. if not IsSoundButton(i) then next repeat
  854. if the hilite of btn i then send "deleteMe" to btn i
  855. end repeat
  856. unlock screen
  857. resetAPMenus
  858. end apDelVNote
  859.  
  860. on apHideNotes
  861. get number of btns
  862. if it = 0 then exit apHideNotes
  863. lock screen
  864. repeat with i = it down to 1
  865. if not IsSoundButton(i) then next repeat
  866. hide btn i
  867. end repeat
  868. unlock screen
  869. updateAnnoteMenus
  870. end apHideNotes
  871.  
  872. on apShowNotes
  873. get number of btns
  874. if it = 0 then exit apShowNotes
  875. lock screen
  876. repeat with i = 1 to it
  877. if not IsSoundButton(i) then next repeat
  878. show btn i
  879. end repeat
  880. unlock screen
  881. updateAnnoteMenus
  882. end apShowNotes
  883.  
  884. on apAddMemo
  885. global SaveSelect
  886. saveSelection
  887. if there is a window AudioPalette then
  888. send "save" to window AudioPalette
  889. else
  890. AudioPalette
  891. if not (there is a window "AudioPalette") then
  892. if saveSelect is not empty then set the textstyle of saveSelect to plain
  893. end if
  894. end if
  895. end apAddMemo
  896.  
  897. on resetAPButtons --sent by buttons in appointments and addresses
  898. global memoMItem,delMItem,showMItem,hideMItem
  899. if not (there is a field "notes") then exit resetAPButtons
  900. if the visible of field "notes" then
  901. APHideNotes
  902. else
  903. APShowNotes
  904. end if
  905. end resetAPButtons
  906.  
  907. on PlayAllMemos
  908. get the number of btns
  909. if it is 0 then exit PlayAllMemos
  910. repeat with i = 1 to it
  911. set the hilite of btn i to true
  912. play line 1 of the short name of btn i
  913. repeat until the sound is done
  914. set the hilite of btn i to not the hilite of btn i
  915. if the mouseclick then
  916. set the hilite of btn i to false
  917. exit PlayAllMemos
  918. end if
  919. wait 15
  920. end repeat
  921. set the hilite of btn i to false
  922. end repeat
  923. UpdateAnnoteMenus
  924. end PlayAllMemos
  925.  
  926. function CardHasSounds
  927. if the number of btns = 0 then return false
  928. get the number of btns
  929. repeat with i = 1 to it
  930. if IsSoundButton(i) then return true
  931. end repeat
  932. return false
  933. end CardHasSounds
  934.  
  935. function IsSoundButton theNumber
  936. return line 2 of the short name of btn theNumber = "AP Button"
  937. end IsSoundButton
  938.  
  939. function FirstSoundButton
  940. if the number of btns = 0 then return 0
  941. get the number of btns
  942. repeat with i = 1 to it
  943. if IsSoundButton(i) then return i
  944. end repeat
  945. return 0
  946. end FirstSoundButton</script>
  947.     <background id="7507" file="background_7507.xml" name="Main Topics" />
  948.     <background id="13784" file="background_13784.xml" name="Content" />
  949.     <background id="20640" file="background_20640.xml" name="Ancillary" />
  950.     <card id="18406" file="card_18406.xml" marked="false" name="" owner="7507" />
  951.     <card id="22632" file="card_22632.xml" marked="false" name="" owner="7507" />
  952.     <card id="19850" file="card_19850.xml" marked="false" name="" owner="7507" />
  953.     <card id="21934" file="card_21934.xml" marked="false" name="" owner="7507" />
  954.     <card id="21412" file="card_21412.xml" marked="false" name="" owner="7507" />
  955.     <card id="3523" file="card_3523.xml" marked="false" name="What is the Audio Palette?" owner="13784" />
  956.     <card id="45252" file="card_45252.xml" marked="false" name="" owner="13784" />
  957.     <card id="4993" file="card_4993.xml" marked="false" name="What you need to use Audio P" owner="13784" />
  958.     <card id="11813" file="card_11813.xml" marked="false" name="" owner="13784" />
  959.     <card id="2615" file="card_2615.xml" marked="false" name="" owner="13784" />
  960.     <card id="40982" file="card_40982.xml" marked="false" name="" owner="13784" />
  961.     <card id="4838" file="card_4838.xml" marked="false" name="Opening the Audio Palette" owner="13784" />
  962.     <card id="12218" file="card_12218.xml" marked="false" name="" owner="13784" />
  963.     <card id="8374" file="card_8374.xml" marked="false" name="Audio Palette commands" owner="13784" />
  964.     <card id="31386" file="card_31386.xml" marked="false" name="" owner="13784" />
  965.     <card id="42283" file="card_42283.xml" marked="false" name="" owner="13784" />
  966.     <card id="32320" file="card_32320.xml" marked="false" name="Digital Sound" owner="13784" />
  967.     <card id="4106" file="card_4106.xml" marked="false" name="" owner="13784" />
  968.     <card id="2885" file="card_2885.xml" marked="false" name="" owner="13784" />
  969.     <card id="4394" file="card_4394.xml" marked="false" name="" owner="13784" />
  970.     <card id="6142" file="card_6142.xml" marked="false" name="Sound quality" owner="13784" />
  971.     <card id="6520" file="card_6520.xml" marked="false" name="Sound quality" owner="13784" />
  972.     <card id="43879" file="card_43879.xml" marked="false" name="Managing memory and disk spa" owner="13784" />
  973.     <card id="6367" file="card_6367.xml" marked="false" name="" owner="13784" />
  974.     <card id="32025" file="card_32025.xml" marked="false" name="" owner="13784" />
  975.     <card id="23380" file="card_23380.xml" marked="false" name="" owner="13784" />
  976.     <card id="44283" file="card_44283.xml" marked="false" name="" owner="13784" />
  977.     <card id="25478" file="card_25478.xml" marked="false" name="" owner="13784" />
  978.     <card id="27433" file="card_27433.xml" marked="false" name="" owner="13784" />
  979.     <card id="44669" file="card_44669.xml" marked="false" name="" owner="13784" />
  980.     <card id="8457" file="card_8457.xml" marked="false" name="Adding audio memos to" owner="13784" />
  981.     <card id="15447" file="card_15447.xml" marked="false" name="" owner="13784" />
  982.     <card id="17734" file="card_17734.xml" marked="false" name="" owner="13784" />
  983.     <card id="7986" file="card_7986.xml" marked="false" name="" owner="13784" />
  984.     <card id="15844" file="card_15844.xml" marked="false" name="" owner="13784" />
  985.     <card id="16048" file="card_16048.xml" marked="false" name="" owner="13784" />
  986.     <card id="16197" file="card_16197.xml" marked="false" name="" owner="13784" />
  987.     <card id="15142" file="card_15142.xml" marked="false" name="" owner="13784" />
  988.     <card id="5280" file="card_5280.xml" marked="false" name="Adding sound to your own sta" owner="13784" />
  989.     <card id="23724" file="card_23724.xml" marked="false" name="" owner="13784" />
  990.     <card id="14282" file="card_14282.xml" marked="false" name="" owner="13784" />
  991.     <card id="14444" file="card_14444.xml" marked="false" name="" owner="13784" />
  992.     <card id="22836" file="card_22836.xml" marked="false" name="" owner="13784" />
  993.     <card id="14825" file="card_14825.xml" marked="true" name="" owner="13784" />
  994.     <card id="14851" file="card_14851.xml" marked="false" name="" owner="13784" />
  995.     <card id="7111" file="card_7111.xml" marked="false" name="" owner="13784" />
  996.     <card id="8861" file="card_8861.xml" marked="false" name="Playing sounds" owner="13784" />
  997.     <card id="16558" file="card_16558.xml" marked="false" name="" owner="13784" />
  998.     <card id="16716" file="card_16716.xml" marked="false" name="" owner="13784" />
  999.     <card id="16946" file="card_16946.xml" marked="false" name="" owner="13784" />
  1000.     <card id="5462" file="card_5462.xml" marked="false" name="Opening a new sound" owner="13784" />
  1001.     <card id="24751" file="card_24751.xml" marked="false" name="" owner="13784" />
  1002.     <card id="8996" file="card_8996.xml" marked="false" name="Deleting audio memos" owner="13784" />
  1003.     <card id="13565" file="card_13565.xml" marked="false" name="" owner="13784" />
  1004.     <card id="31573" file="card_31573.xml" marked="false" name="" owner="13784" />
  1005.     <card id="9898" file="card_9898.xml" marked="false" name="Editing tools and the wavefo" owner="13784" />
  1006.     <card id="34891" file="card_34891.xml" marked="false" name="" owner="13784" />
  1007.     <card id="33359" file="card_33359.xml" marked="false" name="" owner="13784" />
  1008.     <card id="33190" file="card_33190.xml" marked="false" name="" owner="13784" />
  1009.     <card id="41969" file="card_41969.xml" marked="false" name="" owner="13784" />
  1010.     <card id="32767" file="card_32767.xml" marked="false" name="" owner="13784" />
  1011.     <card id="33590" file="card_33590.xml" marked="false" name="" owner="13784" />
  1012.     <card id="43364" file="card_43364.xml" marked="false" name="" owner="13784" />
  1013.     <card id="30704" file="card_30704.xml" marked="false" name="Recording while a sound is o" owner="13784" />
  1014.     <card id="33822" file="card_33822.xml" marked="false" name="" owner="13784" />
  1015.     <card id="42569" file="card_42569.xml" marked="false" name="" owner="13784" />
  1016.     <card id="34163" file="card_34163.xml" marked="false" name="" owner="13784" />
  1017.     <card id="34525" file="card_34525.xml" marked="false" name="" owner="13784" />
  1018.     <card id="34574" file="card_34574.xml" marked="false" name="" owner="13784" />
  1019.     <card id="35320" file="card_35320.xml" marked="false" name="" owner="13784" />
  1020.     <card id="35409" file="card_35409.xml" marked="false" name="" owner="13784" />
  1021.     <card id="9475" file="card_9475.xml" marked="false" name="Moving a sound" owner="13784" />
  1022.     <card id="44418" file="card_44418.xml" marked="false" name="" owner="13784" />
  1023.     <card id="38187" file="card_38187.xml" marked="false" name="" owner="13784" />
  1024.     <card id="38576" file="card_38576.xml" marked="false" name="" owner="13784" />
  1025.     <card id="38740" file="card_38740.xml" marked="false" name="" owner="13784" />
  1026.     <card id="35778" file="card_35778.xml" marked="false" name="" owner="13784" />
  1027.     <card id="35891" file="card_35891.xml" marked="false" name="" owner="13784" />
  1028.     <card id="45359" file="card_45359.xml" marked="false" name="" owner="13784" />
  1029.     <card id="36348" file="card_36348.xml" marked="false" name="" owner="13784" />
  1030.     <card id="36554" file="card_36554.xml" marked="false" name="" owner="13784" />
  1031.     <card id="36772" file="card_36772.xml" marked="false" name="" owner="13784" />
  1032.     <card id="37048" file="card_37048.xml" marked="false" name="" owner="13784" />
  1033.     <card id="37348" file="card_37348.xml" marked="false" name="" owner="13784" />
  1034.     <card id="23242" file="card_23242.xml" marked="false" name="Saving a sound in a differen" owner="13784" />
  1035.     <card id="9289" file="card_9289.xml" marked="false" name="" owner="13784" />
  1036.     <card id="38961" file="card_38961.xml" marked="false" name="" owner="13784" />
  1037.     <card id="25751" file="card_25751.xml" marked="false" name="Deleting sounds" owner="13784" />
  1038.     <card id="39393" file="card_39393.xml" marked="false" name="" owner="13784" />
  1039.     <card id="39580" file="card_39580.xml" marked="false" name="" owner="13784" />
  1040.     <card id="39732" file="card_39732.xml" marked="false" name="" owner="13784" />
  1041.     <card id="39984" file="card_39984.xml" marked="false" name="" owner="13784" />
  1042.     <card id="37594" file="card_37594.xml" marked="false" name="" owner="13784" />
  1043.     <card id="10028" file="card_10028.xml" marked="false" name="Recording level" owner="13784" />
  1044.     <card id="27864" file="card_27864.xml" marked="false" name="" owner="13784" />
  1045.     <card id="28018" file="card_28018.xml" marked="false" name="" owner="13784" />
  1046.     <card id="10466" file="card_10466.xml" marked="false" name="Recording time" owner="13784" />
  1047.     <card id="10744" file="card_10744.xml" marked="false" name="Play through" owner="13784" />
  1048.     <card id="28545" file="card_28545.xml" marked="false" name="" owner="13784" />
  1049.     <card id="11106" file="card_11106.xml" marked="false" name="Auto Record Level" owner="13784" />
  1050.     <card id="11482" file="card_11482.xml" marked="false" name="Compression" owner="13784" />
  1051.     <card id="29011" file="card_29011.xml" marked="false" name="" owner="13784" />
  1052.     <card id="11553" file="card_11553.xml" marked="false" name="Recording Quality" owner="13784" />
  1053.     <card id="46355" file="card_46355.xml" marked="false" name="" owner="13784" />
  1054.     <card id="28352" file="card_28352.xml" marked="false" name="" owner="13784" />
  1055.     <card id="29340" file="card_29340.xml" marked="false" name="Volume Control" owner="13784" />
  1056.     <card id="17277" file="card_17277.xml" marked="false" name="Quick View" owner="20640" />
  1057.     <card id="7275" file="card_7275.xml" marked="false" name="" owner="20640" />
  1058.     <card id="3844" file="card_3844.xml" marked="false" name="Overview" owner="20640" />
  1059. </stack>
  1060.